
package cn.com.pusai.core.util;

import java.io.*;

public class IOUtil
{

	public IOUtil()
	{
	}
	
	/**
	 * 获取文件的后缀名
	 * @param 文件对象
	 * @return 后缀格式如:.txt
	 * */
	public static String getFileExtension(File file)
	{
		if (isFile(file))
			return file.getName().substring(file.getName().lastIndexOf("."));
		else
			return null;
	}
	
	/**
	 * 获取文件的后缀名
	 * @param filepath 路径
	 * @return 后缀格式如:.txt
	 * */
	public static String getFileExtension(String filepath)
	{
		if(filepath.lastIndexOf(".")!=-1)
			return filepath.substring(filepath.lastIndexOf("."));
		else
			return null;
	}
	
	
	
	/**
	 * 获取文件后缀之外的字符串
	 * @param 文件对象
	 * @return 
	 * */
	public static String getFileNameNoExt(File file)
	{
		if (isFile(file))
			return file.getName().substring(0, file.getName().indexOf("."));
		else
			return null;
	}
	
	
	/**
	 * 获取文件的后缀名
	 * @param 路径
	 * @return 后缀格式如: C://work/ddd.html  或则的是 C://work/ddd
	 * */
	public static String getFileNameNoExt(String filepath)
	{
		if(filepath.lastIndexOf(".")!=-1)
			return filepath.substring(0,filepath.lastIndexOf("."));
		else
			return null;
	}

	public static String getFileParent(File file)
	{
		
		if (isFile(file))
			return file.getParent();
		else
			return null;
	}
	
	/**
	 * 判断是否是文件
	 * @param 文件对象
	 * */
	public static boolean isFile(File file)
	{
		return file != null && file.isFile() && file.getName().indexOf(".") != -1;
	}

	public static long copy(InputStream input, OutputStream output)
	{
		byte buffer[] = new byte[4096];
		long count = 0L;
		int n = 0;
		try
		{
			while (-1 != (n = input.read(buffer))) 
			{
				output.write(buffer, 0, n);
				count += n;
			}
		}
		catch (Exception e)
		{
			throw new RuntimeException(e);
		}
		return count;
	}
	
	
	/**
	 * 关闭输入流
	 * */
	public static void close(InputStream input)
	{
		if (input != null)
			try
			{
				input.close();
			}
			catch (IOException ioexception) { }
	}

	public static void close(OutputStream output)
	{
		if (output != null)
			try
			{
				output.close();
			}
			catch (IOException ioexception) { }
	}

	public static void close(Writer output)
	{
		if (output != null)
			try
			{
				output.close();
			}
			catch (IOException ioexception) { }
	}

	public static void close(Reader input)
	{
		if (input != null)
			try
			{
				input.close();
			}
			catch (IOException ioexception) { }
	}
}
